<?php
//验证器的基类
namespace app\api\validate;

use think\Validate;
use think\Request;
use think\Exception;
use app\lib\exception\ParameterException;

class BaseValidate extends Validate{
    public function goCheck(){
        //获取http传入的参数
        //对这些参数做校验
        $request = Request::instance();
        $params = $request->param();
        

        //$result = $this->batch()->check($params);
        $result = $this->check($params);
        if(!$result){  //如果验证错误
            $e = new ParameterException([
                'msg' => $this->error
            ]);
            throw $e;  //抛出自定义异常信息
        }else{
            return true;
        };
    }

    //自定义验证规则，必须是正整数
    protected function isPositiveInterger($value, $rule='', $data='', $field=''){
        if(is_numeric($value) && is_int($value + 0) && ($value + 0)>0){
            return true;
        }else{
            return false;
        };
    }

    //自定义验证规则，不能为空
    protected function isNotEmpty($value, $rule='', $data='', $field=''){
        if(empty($value)){
            return false;
        }else{
            return true;
        };
    }


    //没有使用TP的正则验证，集中在一处方便以后修改
    //不推荐使用正则，因为复用性太差
    //手机号的验证规则
    protected function isMobile($value)
    {
        $rule = '^1(3|4|5|7|8)[0-9]\d{8}$^';
        $result = preg_match($rule, $value);
        if ($result) {
            return true;
        } else {
            return false;
        }
    }


    //根据规则获取数据，只获取规定的数据
    public function getDataByRule($arrays){
        //这里也可以不进行抛出异常，只取需要的
        if(array_key_exists('user_id', $arrays) | array_key_exists('uid', $arrays)){
            //不允许包含user_id或uid，防止恶意覆盖user_id外键
            throw new ParameterException([
                'msg' => '参数中包含有非法的参数名user_id或uid'
            ]);
        }

        $newArray = [];
        foreach($this->rule as $key=>$val){
            $newArray[$key] = $arrays[$key];
        }
        return $newArray;
    }


}

?>